1. The Field of the Invention
This invention relates generally to the field of computer networking and data storage. In particular, embodiments of the present invention relate to a distributed data storage and sharing system.
2. The Relevant Technology
Computer and data communications networks continue to proliferate due to declining costs, increasing performance of computer and networking equipment, and increasing demand for communication bandwidth. Communications networks, including wide area networks (“WANs”) and local area networks (“LANs”), allow increased productivity and utilization of distributed computers or stations through the sharing of resources, the transfer of voice and data, and the processing of voice, data and related information at the most efficient locations. Moreover, as organizations have recognized the economic benefits of using communications networks, network applications such as electronic mail, voice and data transfer, host access, and shared and distributed databases are increasingly used as a means to increase user productivity. This increased demand, together with the growing number of distributed computing resources, has resulted in a rapid expansion of the number of installed networks.
As the demand for networks has increased, network technology has grown to include many different physical configurations. Such networks utilize different cabling systems, different bandwidths and typically transmit data at different speeds. In addition, each of the different network types have different sets of standards, referred to as protocols, which set forth the rules for accessing the network and for communicating among the resources on the network. Historically, a majority of installed networks have been wire-based. That is, the interconnections between clients, servers, and peripherals are accomplished with wire and cable-based connection systems. Depending on the size and type of network involved, the cost can be significant and the installation, maintenance and upgrading of such networks can be complex and require sophisticated skills. Moreover, even the physical space needed for today's wire-based network systems can be prohibitive.
A key advantage of utilizing computer networks is the ability for individual computers and users to share various resources on the network. One important form of resource sharing is the ability to remotely store data from one computer or device onto a different computer or device. For example, a laptop or portable computer attached to the network could have the ability to store data on a large capacity data storage device that is also connected to the network. Remotely stored data can be used as a primary data source or as a redundant data source for reliability purposes. Because of frequent software and hardware failures, plus security breach issues, redundancy and reliability have become critical in current computer networks. Therefore, in order to properly “back up” and secure data, it should be encrypted and stored at a remote location.
Likewise, the ability to share data with various members of a computer network has also become important for allowing efficient methods of remote collaboration. Online or remote collaboration has become an important method of generating documents and reviewing existing documents. To facilitate this form of collaboration, a particular file or segment of data must be accessible by all of the participating parties. This can be done by either placing a copy of the file at each of the locations or providing all participants access to a single file. The former solution is more favorable in many WAN scenarios because it does not rely on a single piece of hardware and is not limited by bandwidth. For example, many existing services provide the ability to store data at a remote internet accessible location such that numerous parties can access the data and thereby collaborate. Unfortunately, the reliability of the Internet, the reliability of the service's hardware, and the limited bandwidth of the Internet limit the effective collaboration under this scheme. Therefore, for WAN applications, it is more desirable to store a copy of the file at the location of every participant involved in the collaboration.
Current networking software modules do not provide adequate mechanisms to allow for the dynamic storage of particular files or segments of data, whether for remote backup or collaboration purposes. Dynamic storage refers to storing a segment of data and automatically replacing the segment of data with a more current version at periodic intervals. Most existing network software modules allow users to manually transfer data from one location to another but do not update the data. If the purpose of the remote data storage is to provide reliability for the file, this is only achieved if the file is updated periodically so that additional data added to the original file after the initial transfer are not lost in the event the original file is lost. If the purpose of the remote data storage is to facilitate online or remote collaboration, it is vital that the copies of the document at each location be periodically updated so that each participant can see what each of the other participants are doing.
Most conventional systems that permit either remotely backing up data or sharing data with remote computers are expensive or require the specialized skills of a network administrator or an information technology professional. In spite of these costs and complexities, many business or enterprise networks have been able to use such systems. However, most users of computers in home and small offices and most users of computers for personal rather than business purposes have been unable to remotely back up data or conveniently share data with other remote users.